<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <?php echo $html->charset(); ?>
        <title><?php echo $this->element('pageTitle') . $title_for_layout; ?></title>
        <?php
        echo $html->meta('icon');
        echo $html->css('print');
        echo $html->css('style');

        // ถ้า browser ผู้ใช้ คือ IE
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
            echo $html->css('print_ie');
        }
        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.0') !== FALSE) {
            echo $html->css('print_ie7');
        }
        // ถ้าเป็นกระดาษแนวนอน
        if (isset($print_orientation) && $print_orientation == PRINT_LANDSCAPE) {
            echo $html->css('print_landscape');
        }

        echo $javascript->link('prototype');
        echo $javascript->link('jquery/jquery-1.3.2.min');
        ?>
        <script type="text/javascript" >
            //ต้องมีคำสั่งนี้เพื่อให้ jQuery ใช้งานกับ javascript framework อื่น ๆ ได้
            var $j = jQuery.noConflict();
            var widepage = <?php echo isset($widepage)? 'true': 'false'; ?>;

            $j(function() {
                //                                return;
                //ความสูงรวม 1 หน้ากระดาษ A4 ประมาณ 900 pixel
                var PAGE_HEIGHT;
                if ($j.browser.msie == true) {
                    if (parseFloat($j.browser.version) < 8.0) {
                        PAGE_HEIGHT = 870;
                    } else {
                        PAGE_HEIGHT = 900;
                    }
                } else {
                    PAGE_HEIGHT = 900;
                }

<?php
// ถ้าเป็นกระดาษแนวนอน
if (isset($print_orientation) && $print_orientation == PRINT_LANDSCAPE) : ?>
        PAGE_HEIGHT = 630;
<?php endif; ?>

        var totalHeight = $j("#container").height();
        //                alert(totalHeight);

        // ถ้าความสูงรวมเกิน 1 หน้า
        if (totalHeight > PAGE_HEIGHT) {
            var pageNo = 1;

            // เอา divFirstHeader มาใส่หน้าแรก
            $j('#divFirstHeader').appendTo('#pages');

            // หัวแต่ละหน้า
            var header = $j(".header").length == 0? $j('<div>'): $j('.header');

            // ท้ายแต่ละหน้า
            var footer = $j(".footer").length == 0? $j('<div>'): $j('.footer');

            // หัวตารางข้อมูล
            var tableHeader = $j('.main thead');

            // ท้ายตารางข้อมูล
            var tableFooter = $j('.main tfoot');

            // ความสูงหน้าปัจจุบัน เริ่มต้น = ความสูงส่วน divFirstHeader และ .header
            var currentPageHeight = $j('#divFirstHeader').height();
            currentPageHeight += header.height();

            var tableFooterHeight = tableFooter.height() || 0;
            var footHeight = footer.height();

            //                    // แถวข้อมูลทั้งหมด
            var rows = $j('.main tbody tr');

            //                    // ความสูงแต่ละแถวในตารางข้อมูล
            var rowsHeight = [];
            rows.each(function() {
                rowsHeight.push($j(this).height());
            });

            // สร้างหน้าแรก
            var page = $j('<div></div>').attr({id: "page" + pageNo, className: "page"}).append(header).appendTo('#pages');

            // สร้าง div main ตารางข้อมูล
            var main = $j('<div></div>').attr({id: "divMain" + pageNo, className: "main"}).appendTo(page);

            // ถ้ามีลายน้ำ
            if ($j("#watermark").get(0) != null) {
                $j("#watermark").clone().appendTo(main);
            }

            // สร้างตารางข้อมูล
            $j('<table></table>').attr({id: "dataTable" + pageNo, className: 'dataTable', cellspacing: "0", cellpadding: "0"}).appendTo(main);

            // ใส่หัวตาราง
            tableHeader.clone().appendTo("#dataTable" + pageNo);
            currentPageHeight += tableHeader.height();
            //            alert('currentPageHeight: ' + currentPageHeight);

            // แถวปัจจุบัน
            var rowNo = 0;

            // วนลูปแต่ละแถว
            rows.each(function(e) {
                $j(this).appendTo($j("#dataTable" + pageNo));
                currentPageHeight += rowsHeight[rowNo++];

                // ถ้าแถวถัดไป รวม footer ความสูงเกินหน้า
                var nextRow = rowsHeight[rowNo] || 0;
                if (currentPageHeight + nextRow + tableFooterHeight + footHeight >= PAGE_HEIGHT) {
                    //                            alert($j(this).hasClass('emptyRow'));
                    if ($j(this).is(".emptyRow")) {
                        return false;   // jQuery break
                    }

                    // ใส่ footer
                    footer.clone().appendTo("#page" + pageNo);

                    // ขึ้นหน้าใหม่
                    pageNo++;

                    // สร้างหน้าใหม่
                    var page = $j('<div></div>').attr({id: "page" + pageNo, className: "page"}).append(header.clone()).appendTo('#pages');
                    // ความสูงหน้าปัจจุบัน เริ่มต้น = header
                    currentPageHeight = header.height();

                    // สร้าง div main ตารางข้อมูล
                    var main = $j('<div></div>').attr({id: "divMain" + pageNo, className: "main"}).appendTo(page);

                    // ถ้ามีลายน้ำ
                    if ($j("#watermark").get(0) != null) {
                        $j("#watermark").clone().appendTo(main);
                    }

                    // สร้างตารางข้อมูล
                    $j('<table></table>').attr({id: "dataTable" + pageNo, className: 'dataTable', cellspacing: "0", cellpadding: "0"}).appendTo(main);

                    // ใส่หัวตาราง
                    tableHeader.clone().appendTo("#dataTable" + pageNo);
                    currentPageHeight += tableHeader.height();
                    //
                }

            });

            // ท้ายตาราง
            tableFooter.appendTo("#dataTable" + pageNo);
            
            footer.clone().appendTo("#page" + pageNo);
            // ใส่หมายเลขหน้า
            var no = 1;
            $j(".pageNo").each(function() {
                $j(this).text((no++) + "/" + pageNo);
            })
            // เอา divLastFooter มาใส่ที่ .footer ตัวสุดท้าย
            $j('#divLastFooter').appendTo('#pages .footer:last');
            $j("#container").remove('');
        }
        window.print();
    });
        </script>
    </head>
    <body id="body" class="
    <?php echo isset($widepage)? 'p85x11 ': ' '; ?>
    <?php echo (isset($print_orientation) && $print_orientation == PRINT_LANDSCAPE)? ' landscape': ' '; ?>
          ">
        <div id="pages"></div>
        <div id="container">
            <?php echo $content_for_layout; ?>
        </div>
    </body>
</html>

